#include<stdio.h>

const int N=1e9+7,maxn=1e3+10;
long long dp[maxn]; 


long long dg(int n,int m)
{
	if(n<1||m<1)
		return 0;
	if(n==1||m==1)
		return 1;
	if(dp[n]!=0)
		return dp[n]%N;
	else{
		if(n<m){
			dp[n]=dg(n,n);
			return dp[n]%N;
		}	 
		if(m==n){
			dp[n]=dg(n,m-1)+1;
			return dp[n]%N;
		}
		dp[n]=dg(n-m,m)+dg(n,m-1);
		return dp[n]%N;
	}
}


int main()
{
	int n;
	scanf("%d",&n);
	printf("%lld",dg(n,n)%N);
	return 0;
}
